home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / games / nhak_src.zip / OBJECTS.C < prev    next >
C/C++ Source or Header  |  1993-03-16  |  34KB  |  803 lines

  1. /*    SCCS Id: @(#)objects.c    3.0    89/04/14
  2. /* NetHack may be freely redistributed.  See license for details. */
  3. /* Copyright (c) Mike Threepoint, 1989 (890110) */
  4.  
  5. #include "config.h"
  6. #include "obj.h"
  7. #include "objclass.h"
  8. #include "prop.h"
  9.  
  10. /* objects have letter " % ) ( 0 _ ` [ ! ? / = * + . */
  11.  
  12. #ifdef C
  13. #undef C
  14. #endif
  15. #ifdef TEXTCOLOR
  16. #include "color.h"
  17. #define C(n)    n
  18. #else
  19. #define C(n)
  20. #endif
  21.  
  22. #if defined(MACOS) && !defined(MAKEDEFS_C)
  23. struct objclass *objects;
  24. struct small_objclass sm_obj[] = {
  25. #else
  26. struct objclass NEARDATA objects[] = {
  27. #endif
  28.  
  29. #if defined(MACOS) && !defined(MAKEDEFS_C)
  30.     { "strange object", NULL},
  31. #else
  32.     { "strange object", NULL, NULL, 1,0,0,0,0, 0,
  33.         ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) },
  34. #endif
  35. /* amulets ... - THE Amulet comes last because it is special */
  36. #if defined(MACOS) && !defined(MAKEDEFS_C)
  37. #define AMULET(name,desc,power,prob,weight) { \
  38.     name, desc}
  39. #else
  40. #define AMULET(name,desc,power,prob,weight) { \
  41.     name, desc, NULL, 0,0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, \
  42.     150, 0, 0, 0, C(HI_METAL) }
  43. #endif
  44.  
  45.     AMULET("amulet of esp",       "circular",    TELEPAT,    190, 2),
  46.     AMULET("amulet of life saving",   "spherical",    LIFESAVED,   90, 2),
  47.     AMULET("amulet of strangulation", "oval",    STRANGLED,  150, 2),
  48.     AMULET("amulet of restful sleep", "triangular",    SLEEPING,   150, 2),
  49.     AMULET("amulet versus poison",      "pyramidal",    POISON_RES, 180, 2),
  50.     AMULET("amulet of change",      "square",    0,        150, 2),
  51.                                 /* POLYMORPH */
  52.     AMULET("amulet of reflection",      "hexagonal",    REFLECTING,  90, 2),
  53.  
  54. #if defined(MACOS) && !defined(MAKEDEFS_C)
  55.     { "Amulet of Yendor", NULL},
  56. #else
  57.     { "Amulet of Yendor", NULL, NULL, 1,0,1,0,METAL, 0,
  58.         AMULET_SYM, 0, 0, 2, 3500, 0, 0, 0, C(HI_METAL) },
  59. #endif
  60. #undef AMULET
  61.  
  62. #if defined(MACOS) && !defined(MAKEDEFS_C)
  63. #define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) { \
  64.     name, NULL}
  65. #else
  66. #define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) { \
  67.     name, NULL, NULL, 1,1,uk,0,tin, 0, FOOD_SYM, prob, delay, wt, \
  68.     nutrition/20 + 5, 0, 0, nutrition, C(color) }
  69. #endif
  70.  
  71. /* all types of food (except tins & corpses) must have a delay of at least 1. */
  72. /* delay on corpses is computed and is weight dependant */
  73. /* dog eats foods 0-4 but prefers tripe rations above all others */
  74. /* fortune cookies can be read */
  75. /* carrots improve your vision */
  76. /* +0 tins contain monster meat */
  77. /* +1 tins (of spinach) make you stronger (like Popeye) */
  78. /* food CORPSE is a cadaver of some type */
  79.  
  80.     /* meat */
  81. #ifdef TOLKIEN
  82.     FOOD("tripe ration",       145, 2, 2, 0, 0, 200, BROWN),
  83. #else
  84.     FOOD("tripe ration",       150, 2, 2, 0, 0, 200, BROWN),
  85. #endif
  86.     FOOD("corpse",             0, 1, 0, 0, 0,   0, BROWN),
  87.     FOOD("egg",            85, 1, 1, 1, 0,  80, WHITE),
  88.     /* fruits & veggies */
  89.     FOOD("apple",            15, 1, 1, 0, 0,  50, RED),
  90.     FOOD("orange",            10, 1, 1, 0, 0,  80, ORANGE_COLORED),
  91.     FOOD("pear",            10, 1, 1, 0, 0,  50, GREEN|BRIGHT),
  92.     FOOD("melon",            10, 1, 1, 0, 0, 100, GREEN|BRIGHT),
  93.     FOOD("banana",            10, 1, 1, 0, 0,  80, YELLOW),
  94.     FOOD("carrot",            15, 1, 1, 0, 0,  50, ORANGE_COLORED),
  95.     FOOD("clove of garlic",      7, 1, 1, 0, 0,  40, WHITE),
  96. #ifdef TUTTI_FRUTTI
  97.     FOOD("slime mold",        75, 1, 1, 0, 0, 250, BROWN),
  98. #else
  99.     FOOD("slice of pizza",        75, 1, 1, 0, 0, 250, RED),
  100. #endif
  101.     /* human food */
  102.     FOOD("lump of royal jelly",  0, 1, 1, 0, 0, 200, YELLOW),
  103.     FOOD("cream pie",        25, 1, 1, 0, 0, 100, WHITE),
  104.     FOOD("candy bar",        13, 1, 1, 0, 0, 100, BROWN),
  105.     FOOD("fortune cookie",        55, 1, 1, 0, 0,  40, BROWN),
  106. #ifdef TOLKIEN
  107.     FOOD("pancake",         25, 2, 1, 0, 0, 200, BROWN),
  108.     FOOD("lembas wafer",        20, 2, 1, 0, 0, 800, WHITE|BRIGHT),
  109.     FOOD("cram ration",        20, 3, 3, 0, 0, 600, HI_ORGANIC),
  110.     FOOD("food ration",       385, 5, 4, 0, 0, 800, HI_ORGANIC),
  111. #else
  112.     FOOD("pancake",         40, 1, 1, 0, 0, 200, BROWN),
  113.     FOOD("food ration",       405, 5, 4, 0, 0, 800, HI_ORGANIC),
  114. #endif
  115. #ifdef ARMY
  116.     FOOD("K-ration",         0, 1, 1, 0, 0, 400, HI_ORGANIC),
  117.     FOOD("C-ration",         0, 1, 1, 0, 0, 300, HI_ORGANIC),
  118. #endif
  119.     FOOD("tin",            75, 0, 1, 1, METAL, 0, HI_METAL),
  120. #undef FOOD
  121.  
  122. #if defined(MACOS) && !defined(MAKEDEFS_C)
  123. #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal,color) { \
  124.     name, app}
  125. #else
  126. #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal,color) { \
  127.     name, app, NULL, kn,mg,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
  128.     cost, sdam, ldam, 0, C(color) }
  129. #endif
  130. #if defined(MACOS) && !defined(MAKEDEFS_C)
  131. #define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
  132.     name, app}
  133. #else
  134. #define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
  135.     name, app, NULL, kn,1,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
  136.     cost, sdam, ldam, prop, C(color) }
  137. #endif
  138. #if defined(MACOS) && !defined(MAKEDEFS_C)
  139. #define BOW(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
  140.     name, app}
  141. #else
  142. #define BOW(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
  143.     name, app, NULL, kn,0,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
  144.     cost, sdam, ldam, -(prop), C(color) }
  145. #endif
  146.  
  147. /* Note: for weapons that don't do an even die of damage (ex. 2-7 or 3-18)
  148.  * the extra damage is added on in weapon.c, not here! */
  149.  
  150. /* missiles */
  151. #ifdef TOLKIEN
  152. PROJECTILE("arrow",        NULL,        1, 0, 37, 0,  2, 6, 6,
  153.            METAL, WP_BOW, HI_METAL),
  154. PROJECTILE("elven arrow",    "runed arrow",    0, 0, 10, 0,  2, 7, 6,
  155.            METAL, WP_BOW, HI_METAL),
  156. PROJECTILE("orcish arrow",    "black arrow",    0, 0, 11, 0,  2, 5, 6,
  157.            METAL, WP_BOW, BLACK),
  158. #else
  159. PROJECTILE("arrow",        NULL,        1, 0, 58, 0,  2, 6, 6,
  160.            METAL, WP_BOW, HI_METAL),
  161. #endif
  162. PROJECTILE("silver arrow",    NULL,        1, 0,  8, 0,  2, 6, 6,
  163.            SILVER, WP_BOW, HI_SILVER),
  164. PROJECTILE("crossbow bolt",    NULL,        1, 0, 60, 0,  2, 4, 6,
  165.            METAL, WP_CROSSBOW, HI_METAL),
  166.  
  167. WEAPON("dart",        NULL,        1, 1, 0, 60, 0,  2, 3, 2, METAL, HI_METAL),
  168. WEAPON("shuriken",    "throwing star",0, 1, 0, 30, 0,  5, 8, 6, METAL, HI_METAL),
  169. WEAPON("boomerang",    NULL,        1, 1, 0, 15, 3, 20, 9, 9, WOOD, HI_WOOD),
  170.  
  171. /* spears */
  172. #ifdef TOLKIEN
  173. WEAPON("spear",     NULL,        1, 1, 0, 55, 3,  5, 6, 8, METAL, HI_METAL),
  174. WEAPON("elven spear",    "runed spear",    0, 1, 0, 10, 3,  5, 7, 8, METAL, HI_METAL),
  175. WEAPON("orcish spear",    "black spear",    0, 1, 0, 13, 3,  5, 5, 8, METAL, BLACK),
  176. WEAPON("dwarvish spear","shiny spear",    0, 1, 0, 12, 3,  5, 8, 8, METAL, HI_METAL),
  177. #else
  178. WEAPON("spear",     NULL,        1, 1, 0, 90, 3,  5, 6, 8, METAL, HI_METAL),
  179. #endif
  180. WEAPON("javelin",    "throwing spear",0,1, 0, 10, 3,  5, 6, 6, METAL, HI_METAL),
  181. WEAPON("trident",    NULL,        1, 0, 0,  8, 4, 15, 6, 4, METAL, HI_METAL),
  182.                         /* +1 small, +2d4 large */
  183. WEAPON("lance",     NULL,        1, 0, 0,  8, 4, 10, 6, 8, METAL, HI_METAL),
  184.  
  185. /* blades */
  186. #ifdef TOLKIEN
  187. WEAPON("dagger",    NULL,        1, 1, 0, 25, 2,  4, 4, 3, METAL, HI_METAL),
  188. WEAPON("elven dagger",    "large runed knife", 0, 1, 0,  8, 2, 4, 5, 3, METAL, HI_METAL),
  189. WEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 4, 3, 3, METAL, BLACK),
  190. #else
  191. WEAPON("dagger",    NULL,        1, 1, 0, 43, 2,  4, 4, 3, METAL, HI_METAL),
  192. #endif
  193. WEAPON("athame",    NULL,        1, 1, 0,  0, 2,  4, 4, 3, METAL, HI_METAL),
  194. WEAPON("scalpel",    NULL,        1, 1, 0,  0, 1,  4, 4, 3, METAL, HI_METAL),
  195. WEAPON("knife",     NULL,        1, 1, 0, 25, 2,  4, 3, 3, METAL, HI_METAL),
  196. WEAPON("axe",        NULL,        1, 0, 0, 50, 3,  8, 6, 4, METAL, HI_METAL),
  197. #ifdef WORM
  198. WEAPON("worm tooth",    NULL,        1, 0, 0,  0, 3,  2, 2, 2, 0, WHITE),
  199. WEAPON("crysknife",    NULL,        1, 0, 0,  0, 3,100,10,10, METAL, HI_METAL),
  200. #endif
  201.  
  202. /* swords */
  203. #ifdef TOLKIEN
  204. WEAPON("short sword",        NULL,    1, 0, 0,  6, 3, 10, 6, 8, METAL, HI_METAL),
  205. WEAPON("elven short sword",    "short runed sword",
  206.                     0, 0, 0,  2, 3, 10, 8, 8, METAL, HI_METAL),
  207. WEAPON("orcish short sword",    "short black sword",
  208.                     0, 0, 0,  3, 3, 10, 5, 8, METAL, BLACK),
  209. WEAPON("dwarvish short sword",    "short shiny sword",
  210.                     0, 0, 0,  2, 3, 10, 7, 8, METAL, HI_METAL),
  211. #else
  212. WEAPON("short sword",        NULL,    1, 0, 0, 13, 3, 10, 6, 8, METAL, HI_METAL),
  213. #endif
  214. WEAPON("scimitar", "curved sword",    0, 0, 0,  6, 4, 15, 8, 8, METAL, HI_METAL),
  215. #ifdef TOLKIEN
  216. WEAPON("broadsword", "wide sword",    0, 0, 0,  8, 4, 10, 4, 6, METAL, HI_METAL),
  217.                         /* +d4 small, +1 large */
  218. WEAPON("elven broadsword",    "wide runed sword",
  219.                     0, 0, 0,  4, 4, 10, 6, 6, METAL, HI_METAL),
  220.                         /* +d4 small, +1 large */
  221. #else
  222. WEAPON("broadsword", "wide sword",    0, 0, 0, 12, 4, 10, 4, 6, METAL, HI_METAL),
  223.                         /* +d4 small, +1 large */
  224. #endif
  225. WEAPON("long sword",        NULL,    1, 0, 0, 60, 4, 15, 8, 12, METAL, HI_METAL),
  226. #ifdef TOLKIEN
  227. WEAPON("two-handed sword",    NULL,    1, 0, 1, 25, 5, 50,12,    6, METAL, HI_METAL),
  228.                         /* +2d6 large */
  229. WEAPON("dwarvish mattock",    "huge shiny sword",
  230.                     0, 0, 1, 15, 6, 50,12,    8, METAL, HI_METAL),
  231.                         /* +2d6 large */
  232. #else
  233. WEAPON("two-handed sword",    NULL,    1, 0, 1, 40, 5, 50,12,    6, METAL, HI_METAL),
  234.                         /* +2d6 large */
  235. #endif
  236. WEAPON("katana", "samurai sword",    0, 0, 0,  6, 4,100,10, 12, METAL, HI_METAL),
  237.  
  238. /* blunt */
  239. WEAPON("mace",        NULL,        1, 0, 0, 40, 4,  8, 6, 6, METAL, HI_METAL),
  240.                         /* +1 small */
  241. WEAPON("morning star",    NULL,        1, 0, 0, 12, 4, 10, 4, 6, METAL, HI_METAL),
  242.                         /* +d4 small, +1 large */
  243. WEAPON("war hammer",    NULL,        1, 0, 0, 15, 3,  5, 4, 4, METAL, HI_METAL),
  244.                         /* +1 small */
  245. WEAPON("club",        NULL,        1, 0, 0, 10, 3,  4, 6, 3, WOOD, HI_WOOD),
  246. #ifdef KOPS
  247. WEAPON("rubber hose",    NULL,        1, 0, 0,  0, 2,  4, 6, 3, 0, BROWN),
  248. #endif
  249. WEAPON("quarterstaff",    "staff",    0, 0, 1, 10, 3,  8, 6, 6, WOOD, HI_WOOD),
  250. /* two-piece */
  251. WEAPON("aklys",     "thonged club", 0, 0, 0,  8, 3,  4, 6, 3, METAL, HI_METAL),
  252. WEAPON("flail",     NULL,        1, 0, 0, 40, 3,  4, 6, 4, METAL, HI_METAL),
  253.                         /* +1 small, +1d4 large */
  254. /* whip */
  255. WEAPON("bullwhip",    NULL,        1, 0, 0,  5, 2,  4, 2, 1, 0, BROWN),
  256.  
  257. /* polearms */
  258. /* spear-type */
  259. WEAPON("partisan", "vulgar polearm",    0, 0, 1, 10, 3, 10, 6, 6, METAL, HI_METAL),
  260.                         /* +1 large */
  261. WEAPON("ranseur", "hilted polearm",    0, 0, 1, 10, 3,  6, 4, 4, METAL, HI_METAL),
  262.                         /* +d4 both */
  263. WEAPON("spetum", "forked polearm",    0, 0, 1, 10, 3,  5, 6, 6, METAL, HI_METAL),
  264.                         /* +1 small, +d6 large */
  265. WEAPON("glaive", "single-edged polearm", 0, 0, 1, 15, 3, 6, 6,10, METAL, HI_METAL),
  266. /* axe-type */
  267. WEAPON("halberd", "angled poleaxe",    0, 0, 1, 16, 3, 10,10, 6, METAL, HI_METAL),
  268.                         /* +1d6 large */
  269. WEAPON("bardiche", "long poleaxe",    0, 0, 1,  8, 3,  7, 4, 4, METAL, HI_METAL),
  270.                         /* +1d4 small, +2d4 large */
  271. WEAPON("voulge", "pole cleaver",    0, 0, 1,  8, 3,  5, 4, 4, METAL, HI_METAL),
  272.                         /* +d4 both */
  273. /* curved/hooked */
  274. WEAPON("fauchard",    "pole sickle",    0, 0, 1, 11, 3,  5, 6, 8, METAL, HI_METAL),
  275. WEAPON("guisarme",    "pruning hook", 0, 0, 1, 11, 3,  5, 4, 8, METAL, HI_METAL),
  276.                         /* +1d4 small */
  277. WEAPON("bill-guisarme","hooked polearm",0, 0, 1,  8, 3,  7, 4,10, METAL, HI_METAL),
  278.                         /* +1d4 small */
  279. /* other */
  280. WEAPON("lucern hammer", "pronged polearm", 0, 0, 1, 10, 3,  7, 4, 6, METAL, HI_METAL),
  281.                         /* +1d4 small */
  282. WEAPON("bec de corbin","beaked polearm",0, 0, 1,  8, 3,  8, 8, 6, METAL, HI_METAL),
  283.  
  284. /* bows */
  285. #ifdef TOLKIEN
  286. BOW("bow",      NULL,     1, 0, 24, 3, 120, 30, 6, 0, WP_BOW, HI_WOOD),
  287. BOW("elven bow",  "runed bow",    0, 0, 12, 3, 120, 35, 6, 0, WP_BOW, HI_WOOD),
  288. BOW("orcish bow", "black bow",    0, 0, 12, 3, 120, 25, 6, 0, WP_BOW, BLACK),
  289. #else
  290. BOW("bow",      NULL,     1, 0, 48, 3, 120, 30, 6, 0, WP_BOW, HI_WOOD),
  291. #endif
  292. BOW("sling",       NULL,            1, 0, 40, 2,  20,  4, 6, 0, WP_SLING, HI_WOOD),
  293. BOW("crossbow",      NULL,        1, 0, 45, 3,  40, 35, 6, 0, WP_CROSSBOW, HI_WOOD),
  294. #undef WEAPON
  295. #undef PROJECTILE
  296. #undef BOW
  297.  
  298. /* tools ... - PICK AXE comes last because it has special characteristics */
  299. #if defined(MACOS) && !defined(MAKEDEFS_C)
  300. #define TOOL(name,desc,kn,chg,prob,weight,cost,material,color) {\
  301.     name, desc}
  302. #else
  303. #define TOOL(name,desc,kn,chg,prob,weight,cost,material,color) {\
  304.     name, desc, NULL, kn,0,chg,chg,material, 0, TOOL_SYM, prob, 0, \
  305.     weight, cost, 0, 0, 0, C(color)}
  306. #endif
  307.  
  308. #ifdef WALKIES
  309.     TOOL("leash",        NULL,    1, 0,  70,  3,    20, 0, HI_LEATHER),
  310. #endif
  311. #ifdef MEDUSA
  312.     TOOL("blindfold",    NULL,    1, 0,  55,  2,    20, 0, BLACK),
  313.     TOOL("mirror",        NULL,    1, 0,  50,  3,    40, GLASS, BLUE),
  314. #else
  315.     TOOL("blindfold",    NULL,    1, 0, 105,  2,    20, 0, BLACK),
  316. #endif
  317.     TOOL("tinning kit",    NULL,    1, 0,  15, 10,    30, METAL, HI_METAL),
  318.     TOOL("lock pick",    NULL,    1, 0,  55,  2,    20, METAL, HI_METAL),
  319.     TOOL("credit card",    NULL,    1, 0,    5,  1,    10, 0, WHITE),
  320. #ifdef WALKIES
  321.     TOOL("key",        NULL,    1, 0, 100,  1,    10, METAL, HI_METAL),
  322. #else
  323.     TOOL("key",        NULL,    1, 0, 155,  1,    10, METAL, HI_METAL),
  324. #endif
  325.     TOOL("skeleton key",    "key",    0, 0,  60,  1,    10, METAL, HI_METAL),
  326.     TOOL("expensive camera", NULL,    1, 0,    5,  3, 200, 0, BLACK),
  327.     TOOL("magic marker",    NULL,    1, 1,  15,  1,    50, 0, RED),
  328.     TOOL("stethoscope",    NULL,    1, 0,  15,  2,    75, 0, HI_METAL),
  329.     TOOL("tin opener",    NULL,    1, 0,  25,  1,    30, METAL, HI_METAL),
  330. #ifdef WALKIES
  331.     TOOL("lamp",        NULL,    1, 1,  90, 10,    50, 0, YELLOW),
  332. #else
  333.     TOOL("lamp",        NULL,    1, 1, 105, 10,    50, 0, YELLOW),
  334. #endif
  335.     TOOL("magic lamp",    "lamp", 0, 1,  20, 10,    50, 0, YELLOW),
  336.     TOOL("crystal ball",    NULL,    1, 1,  35, 15,    60, GLASS, HI_GLASS),
  337.     TOOL("figurine",    NULL,    1, 0,  35,  5,    80, MINERAL, HI_MINERAL),
  338.     TOOL("ice box",     NULL,    1, 0,    5, 40,  30, 0, WHITE),
  339.     TOOL("large box",    NULL,    1, 0,  40, 40,  20, WOOD, HI_WOOD),
  340.     TOOL("chest",        NULL,    1, 0,  35, 40,  20, WOOD, HI_WOOD),
  341.     TOOL("sack",        "bag",    0, 0,  40,  3,  20, 0, HI_CLOTH),
  342.     TOOL("bag of holding",    "bag",    0, 0,  20,  3, 100, 0, HI_CLOTH),
  343.     TOOL("bag of tricks",    "bag",    0, 1,  20,  3, 100, 0, HI_CLOTH),
  344. #ifndef MUSIC
  345.     TOOL("whistle",     NULL,    1, 0, 120,  2,    10, METAL, HI_METAL),
  346.     TOOL("magic whistle","whistle",    0, 0,  50,  2,    10, METAL, HI_METAL),
  347. #else
  348.     TOOL("whistle",     NULL,    1, 0, 105,  2,    10, METAL, HI_METAL),
  349.     TOOL("magic whistle","whistle",    0, 0,  30,  2,    10, METAL, HI_METAL),
  350.     TOOL("flute",        NULL,    1, 0,    6,  3,    12, WOOD, HI_WOOD),
  351.     TOOL("magic flute",   "flute",    0, 1,    2,  3,    12, WOOD, HI_WOOD),
  352.     TOOL("horn",        NULL,    1, 0,    5,  4,    15, METAL, HI_METAL),
  353.     TOOL("frost horn",    "horn", 0, 1,    2,  4,    15, METAL, HI_METAL),
  354.     TOOL("fire horn",    "horn", 0, 1,    2,  4,    15, METAL, HI_METAL),
  355.     TOOL("harp",        NULL,    1, 0,    4, 10,    50, METAL, HI_METAL),
  356.     TOOL("magic harp",    "harp", 0, 1,    2, 10,    50, METAL, HI_METAL),
  357.     TOOL("bugle",        NULL,    1, 0,    6,  3,    15, METAL, HI_METAL),
  358.     TOOL("drum",        NULL,    1, 0,    4,  4,    25, 0, BROWN),
  359.     TOOL("drum of earthquake", "drum", 0, 1, 2,  4,    25, 0, BROWN),
  360. #endif
  361. #undef TOOL
  362. #if defined(MACOS) && !defined(MAKEDEFS_C)
  363.     { "pick-axe", NULL},
  364.     { "unicorn horn", NULL},
  365.     { "blinding venom", "splash of venom"},
  366.     { "acid venom", "splash of venom"},
  367.         /* +d6 small or large */
  368.     { "heavy iron ball", NULL},
  369.     { "iron chain", NULL},
  370. #else
  371.     { "pick-axe", NULL, NULL, 1,0,1,1,METAL, 0, TOOL_SYM, 20,
  372.                         0, 10, 50, 6, 3, 0, C(HI_METAL)},
  373.     { "unicorn horn", NULL, NULL, 1,0,1,1,0, 0, TOOL_SYM, 0,
  374.                         0, 4, 100, 12, 12, 0, C(WHITE)},
  375.     { "blinding venom", "splash of venom", NULL,
  376.         0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 0, 0, 0, C(HI_ORGANIC)},
  377.     { "acid venom", "splash of venom", NULL,
  378.             0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 6, 6, 0, C(HI_ORGANIC)},
  379.         /* +d6 small or large */
  380.     { "heavy iron ball", NULL, NULL, 1,0,0,0,METAL, 0,
  381.         BALL_SYM, 1000, 0, 20, 10, 0, 0, 0, C(HI_METAL)},
  382.     { "iron chain", NULL, NULL, 1,0,0,0,METAL, 0,
  383.         CHAIN_SYM, 1000, 0, 20, 0, 0, 0, 0, C(HI_METAL)},
  384. #endif
  385.  
  386.     /* Note: boulders and rocks normally do not appear at random; the
  387.      * probabilities only come into effect when you try to polymorph them.
  388.      */
  389. #if defined(MACOS) && !defined(MAKEDEFS_C)
  390.     { "boulder", NULL},
  391.     { "statue", NULL},
  392. #else
  393.     { "boulder", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 100, 0,
  394.         200 /* > MAX_CARR_CAP */, 0, 20, 20, 0, C(HI_MINERAL)},
  395.     { "statue", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 900, 0,
  396.             250, 0, 20, 20, 0, C(HI_MINERAL)},
  397. #endif
  398.  
  399. #if defined(MACOS) && !defined(MAKEDEFS_C)
  400. #define ARMOR(name,desc,kn,blk,power,prob,delay,weight,cost,ac,can,metal,c) \
  401.     {name, desc}
  402. #else
  403. #define ARMOR(name,desc,kn,blk,power,prob,delay,weight,cost,ac,can,metal,c) \
  404.     {name, desc, NULL, kn,0,1,blk,metal, power, ARMOR_SYM, prob,\
  405.     delay, weight, cost, ac, can, 0, C(c)}
  406. #endif
  407. #ifdef TOLKIEN
  408. ARMOR("elven leather helm", "leather hat",
  409.             0, 0, 0,  6, 1, 2,   8, 9, 0, 0, HI_LEATHER),
  410. ARMOR("orcish helm", "black cap",
  411.             0, 0, 0,  6, 1, 3,  10, 9, 0, METAL, BLACK),
  412. ARMOR("dwarvish iron helm", "hard hat",
  413.             0, 0, 0,  6, 1, 3,  20, 8, 0, METAL, HI_METAL),
  414. #else
  415. ARMOR("orcish helm", "black cap",
  416.             0, 0, 0, 18, 1, 3,  10, 9, 0, METAL, BLACK),
  417. #endif
  418. ARMOR("fedora", NULL,    1, 0, 0,  0, 1, 1,   8, 9, 0, 0, BROWN),
  419. ARMOR("helmet", "rusty pot",
  420.             0, 0, 0, 12, 1, 2,  10, 9, 0, METAL, HI_METAL),
  421. ARMOR("helm of brilliance", "plumed hat",
  422.             0, 0, 0,  6, 1, 2,  50, 9, 0, METAL, GREEN),
  423. ARMOR("helm of opposite alignment", "crested helmet",
  424.             0, 0, 0,  6, 1, 2,  50, 9, 0, METAL, HI_METAL),
  425. ARMOR("helm of telepathy", "visored helmet",
  426.             0, 0, TELEPAT, 2, 1, 2, 50, 9, 0, METAL, HI_METAL),
  427.  
  428. /* non-metal and (METAL | 1) armors do not rust */
  429. ARMOR("dragon scale mail", NULL,
  430.             1, 1, 0,  0, 5, 5,1000, 1, 0, 0, HI_LEATHER),
  431. ARMOR("plate mail", NULL,
  432.             1, 1, 0, 44, 5, 9, 600, 3, 2, METAL, HI_METAL),
  433. ARMOR("crystal plate mail", NULL,
  434.             1, 1, 0, 10, 5, 9, 820, 3, 2, GLASS, WHITE|BRIGHT),
  435. #ifdef SHIRT
  436. ARMOR("bronze plate mail", NULL,
  437.             1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER, HI_COPPER),
  438. #else
  439. ARMOR("bronze plate mail", NULL,
  440.             1, 1, 0, 35, 5, 9, 400, 4, 0, COPPER, HI_COPPER),
  441. #endif
  442. ARMOR("splint mail", NULL,    1, 1, 0, 66, 5, 8,  80, 4, 1, METAL, HI_METAL),
  443. ARMOR("banded mail", NULL,    1, 1, 0, 76, 5, 8,  90, 4, 0, METAL, HI_METAL),
  444. #ifdef TOLKIEN
  445. ARMOR("dwarvish mithril-coat", NULL,
  446.             1, 0, 0, 10, 1, 2, 240, 4, 3, MITHRIL, HI_METAL),
  447. ARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 240, 5, 3, MITHRIL, HI_METAL),
  448. ARMOR("chain mail", NULL,    1, 0, 0, 76, 5, 6,  75, 5, 1, METAL, HI_METAL),
  449. ARMOR("orcish chain mail", "black chain mail",
  450.                 0, 0, 0, 20, 5, 6,  75, 5, 1, METAL, BLACK),
  451. #else
  452. ARMOR("dwarvish mithril-coat", NULL,
  453.             1, 0, 0, 25, 1, 2, 240, 4, 3, MITHRIL, HI_METAL),
  454. ARMOR("chain mail", NULL,    1, 0, 0, 96, 5, 6,  75, 5, 1, METAL, HI_METAL),
  455. #endif
  456. ARMOR("scale mail", NULL,    1, 0, 0, 76, 5, 5,  45, 6, 0, METAL, HI_METAL),
  457. ARMOR("studded leather armor", NULL,
  458.                 1, 0, 0, 76, 3, 3,  15, 7, 1, 0, HI_LEATHER),
  459. #ifdef TOLKIEN
  460. ARMOR("ring mail", NULL,    1, 0, 0, 76, 5, 4, 100, 7, 0, METAL, HI_METAL),
  461. ARMOR("orcish ring mail", "black ring mail",
  462.                 0, 0, 0, 20, 5, 5,  80, 8, 1, METAL, BLACK),
  463. #else
  464. ARMOR("ring mail", NULL,    1, 0, 0, 96, 5, 4, 100, 7, 0, METAL, HI_METAL),
  465. #endif
  466. ARMOR("leather armor", NULL,    1, 0, 0, 97, 3, 2,   5, 8, 0, 0, HI_LEATHER),
  467.  
  468. /*  'cope' is not a spelling mistake... leave it be */
  469. ARMOR("mummy wrapping", NULL,
  470.             1, 0, 0,         0, 0, 2,  2, 10, 2, 0, HI_CLOTH),
  471. #ifdef TOLKIEN
  472. ARMOR("elven cloak", "ornamental cope",
  473.             0, 0, STEALTH,        12, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  474. ARMOR("orcish cloak", "black mantelet",
  475.             0, 0, 0,        12, 0, 2, 40, 10, 3, 0, BLACK),
  476. ARMOR("dwarvish cloak", "colorful hooded cloak",
  477.             0, 0, 0,        12, 0, 2, 50, 10, 3, 0, HI_CLOTH),
  478. #else
  479. ARMOR("elven cloak", "ornamental cope",
  480.             0, 0, STEALTH,        36, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  481. #endif
  482. ARMOR("cloak of protection", "tattered cape",
  483.             0, 0, PROTECTION,   12, 0, 2, 50,  7, 3, 0, HI_CLOTH),
  484. ARMOR("cloak of invisibility", "opera hood",
  485.             0, 0, INVIS,        12, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  486. ARMOR("cloak of magic resistance", "faded pall",
  487.             0, 0, ANTIMAGIC,     2, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  488. ARMOR("cloak of displacement", "piece of cloth",
  489.             0, 0, DISPLACED,    12, 0, 2, 50,  9, 3, 0, HI_CLOTH),
  490.  
  491. #ifdef TOLKIEN
  492. ARMOR("small shield", NULL,
  493.             1, 0, 0,    6, 0, 2,  3,  9, 0, METAL, HI_METAL),
  494. ARMOR("elven shield", "blue and green shield",
  495.             0, 0, 0,    2, 0, 2,  3,  8, 0, METAL, GREEN),
  496. ARMOR("Uruk-hai shield", "white-handed shield",
  497.             0, 0, 0,    2, 0, 4,  3,  9, 0, METAL, HI_METAL),
  498. ARMOR("orcish shield", "red-eyed shield",
  499.             0, 0, 0,    2, 0, 3,  3,  9, 0, METAL, RED),
  500. ARMOR("large shield", NULL,
  501.             1, 1, 0,    7, 0, 4,  7,  8, 0, METAL, HI_METAL),
  502. ARMOR("dwarvish roundshield", "large round shield",
  503.             0, 0, 0,    4, 0, 4,  7,  8, 0, METAL, HI_METAL),
  504. #else
  505. ARMOR("small shield", NULL,
  506.             1, 0, 0,       12, 0, 2,  3,  9, 0, METAL, HI_METAL),
  507. ARMOR("large shield", NULL,
  508.             1, 1, 0,       11, 0, 4,  7,  8, 0, METAL, HI_METAL),
  509. #endif
  510. ARMOR("shield of reflection", "polished silver shield",
  511.             0, 0, REFLECTING,  3, 0, 3, 50, 8, 0, SILVER, HI_SILVER),
  512.  
  513. #ifdef SHIRT
  514. ARMOR("Hawaiian shirt", NULL,    1, 0, 0, 10, 0, 2, 5, 10, 0, 0, MAGENTA),
  515. #endif
  516.  
  517. ARMOR("leather gloves", "old gloves",
  518.             0, 0, 0,       16, 1, 2,  8, 9, 0, 0, BROWN),
  519. ARMOR("gauntlets of fumbling", "padded gloves",
  520.             0, 0, FUMBLING,     8, 1, 2, 50, 9, 0, 0, BROWN),
  521. ARMOR("gauntlets of power", "riding gloves",
  522.             0, 0, 0,        8, 1, 2, 50, 9, 0, METAL, BROWN),
  523. ARMOR("gauntlets of dexterity", "fencing gloves",
  524.             0, 0, 0,        8, 1, 2, 50, 9, 0, 0, BROWN),
  525.  
  526. ARMOR("low boots", "walking shoes",
  527.             0, 0, 0,       25, 2, 3,  8, 9, 0, 0, BROWN),
  528. ARMOR("iron shoes", "hard shoes",
  529.             0, 0, 0,        7, 2, 5, 16, 8, 0, METAL, HI_METAL),
  530. ARMOR("high boots", "jackboots",
  531.             0, 0, 0,       15, 2, 4, 12, 8, 0, 0, BROWN),
  532. ARMOR("speed boots", "combat boots",
  533.             0, 0, FAST,       12, 2, 4, 50, 9, 0, 0, BROWN),
  534. ARMOR("water walking boots", "jungle boots",
  535.             0, 0, WWALKING,    12, 2, 4, 50, 9, 0, 0, BROWN),
  536. ARMOR("jumping boots", "hiking boots",
  537.             0, 0, JUMPING,       12, 2, 4, 50, 9, 0, 0, BROWN),
  538. ARMOR("elven boots", "mud boots",
  539.             0, 0, STEALTH,       12, 2, 3,  8, 9, 0, 0, BROWN),
  540. ARMOR("fumble boots", "riding boots",
  541.             0, 0, FUMBLING,    12, 2, 4, 30, 9, 0, 0, BROWN),
  542. ARMOR("levitation boots", "snow boots",
  543.             0, 0, LEVITATION,  12, 2, 4, 30, 9, 0, 0, BROWN),
  544. #undef ARMOR
  545.  
  546. #if defined(MACOS) && !defined(MAKEDEFS_C)
  547. #define GEM(name,desc,prob,wt,gval,glass, color) \
  548.     { name, desc}
  549. #else
  550. #define GEM(name,desc,prob,wt,gval,glass, color) \
  551.         { name, desc, NULL, 0,1,0,0,glass, 0,\
  552.         GEM_SYM, prob, 0, wt, gval, 3, 3, WP_SLING, C(color)}
  553. #endif
  554. GEM("dilithium crystal", "white",     3, 1, 4500, MINERAL, WHITE),
  555. GEM("diamond", "white",          4, 1, 4000, MINERAL, WHITE),
  556. GEM("ruby", "red",             5, 1, 3500, MINERAL, RED),
  557. GEM("sapphire", "blue",          6, 1, 3000, MINERAL, BLUE),
  558. GEM("emerald", "green",          7, 1, 2500, MINERAL, GREEN),
  559. GEM("turquoise", "green",         8, 1, 2000, MINERAL, GREEN),
  560. GEM("aquamarine", "green",        10, 1, 1500, MINERAL, GREEN),
  561. GEM("amber", "yellowish brown",     11, 1, 1000, MINERAL, BROWN),
  562. GEM("topaz", "yellowish brown",     13, 1,    900, MINERAL, BROWN),
  563. GEM("opal", "white",            15, 1,    800, MINERAL, WHITE),
  564. GEM("garnet", "red",            17, 1,    700, MINERAL, RED),
  565. GEM("amethyst", "violet",        19, 1,  600, MINERAL, MAGENTA),
  566. GEM("jasper", "red",            21, 1,    500, MINERAL, RED),
  567. GEM("fluorite", "violet",        22, 1,    400, MINERAL, MAGENTA),
  568. GEM("jade", "green",            23, 1,    300, MINERAL, GREEN),
  569. GEM("worthless piece of white glass", "white",    131, 1, 0, GLASS, WHITE),
  570. GEM("worthless piece of blue glass", "blue",    131, 1, 0, GLASS, BLUE),
  571. GEM("worthless piece of red glass", "red",    131, 1, 0, GLASS, RED),
  572. GEM("worthless piece of yellowish brown glass", "yellowish brown",
  573.                         131, 1, 0, GLASS, BROWN),
  574. GEM("worthless piece of green glass", "green",    131, 1, 0, GLASS, GREEN),
  575. GEM("worthless piece of violet glass", "violet",131, 1, 0, GLASS, MAGENTA),
  576. GEM("luckstone", "gray",         10, 1,  60, MINERAL, GRAY),
  577. GEM("loadstone", "gray",         10, 50,  1, MINERAL, GRAY),
  578. #if defined(MACOS) && !defined(MAKEDEFS_C)
  579. { "rock", NULL},
  580. #else
  581. { "rock", NULL, NULL, 1,1,0,0,MINERAL, 0,
  582.         GEM_SYM, 10, 0, 1, 0, 3, 3, WP_SLING, C(HI_MINERAL)},
  583. #endif
  584. #undef GEM
  585.  
  586. #if defined(MACOS) && !defined(MAKEDEFS_C)
  587. #define POTION(name,desc,power,prob,cost,color) \
  588.     { name, desc}
  589. #else
  590. #define POTION(name,desc,power,prob,cost,color) \
  591.         { name, desc, NULL, 0,1,0,0,0, power,\
  592.         POTION_SYM, prob, 0, 2, cost, 0, 0, 0, C(color)}
  593. #endif
  594.  
  595. #ifdef SPELLS
  596. POTION("fruit juice",        "smoky",    0,    45, 50,    WHITE),
  597. POTION("booze",         "bubbly",    0,    45, 50,    WHITE),
  598. POTION("gain energy",        "ebony",     0,    45,150,    BLACK),
  599. #else
  600. POTION("fruit juice",        "smoky",    0,    70, 50,    WHITE),
  601. POTION("booze",         "bubbly",    0,    65, 50,    WHITE),
  602. #endif
  603. POTION("gain ability",        "swirly",    0,    45,300,    WHITE),
  604. POTION("restore ability",    "pink",        0,    45,100,    MAGENTA|BRIGHT),
  605. POTION("sickness",        "ruby",        0,    45, 50,    RED),
  606. POTION("confusion",        "orange",    CONFUSION, 45, 100, ORANGE_COLORED),
  607. POTION("blindness",        "yellow",    BLINDED, 45,150, YELLOW),
  608. POTION("paralysis",        "emerald",     0,    45,300,    GREEN|BRIGHT),
  609. POTION("speed",         "dark green",     FAST,    45,200,    GREEN),
  610. POTION("levitation",        "cyan",        LEVITATION, 45,200, CYAN),
  611. POTION("hallucination",     "brilliant blue", HALLUC, 45,100, BLUE|BRIGHT),
  612. POTION("invisibility",        "sky blue",    INVIS,    45,150,    CYAN),
  613. POTION("see invisible",     "magenta",    SEE_INVIS, 45,50, MAGENTA),
  614. POTION("healing",        "purple",     0,    65,100,    MAGENTA),
  615. POTION("extra healing",     "purple-red",    0,    50,100,    MAGENTA),
  616. POTION("gain level",        "puce",        0,    20,300,    MAGENTA|BRIGHT),
  617. POTION("enlightenment",        "brown",    0,    20,200,    BROWN),
  618. POTION("monster detection",    "white",    0,    45,150,    WHITE),
  619. POTION("object detection",    "glowing",    0,    45,150,    WHITE|BRIGHT),
  620. POTION("water",         "clear",    0,    125,100,CYAN),
  621. #undef POTION
  622.  
  623. #if defined(MACOS) && !defined(MAKEDEFS_C)
  624. #define SCROLL(name,text,prob,cost) \
  625.     { name, text}
  626. #else
  627. #define SCROLL(name,text,prob,cost) \
  628.     { name, text, NULL, 0,1,0,0,0, 0,\
  629.         SCROLL_SYM, prob, 0, 3, cost, 0, 0, 0, C(HI_PAPER)}
  630. #endif
  631. #ifdef MAIL
  632.     SCROLL("mail",            "KIRJE",         0,   0),
  633. #endif
  634.     SCROLL("enchant armor",     "ZELGO MER",        63,  80),
  635.     SCROLL("destroy armor",     "JUYED AWK YACC",   45, 100),
  636.     SCROLL("confuse monster",    "NR 9",         53, 100),
  637.     SCROLL("scare monster",     "XIXAXA XOXAXA XUXAXA", 35, 100),
  638.     SCROLL("blank paper",        "READ ME",        28,  60),
  639.     SCROLL("remove curse",        "PRATYAVAYAH",        65,  80),
  640.     SCROLL("enchant weapon",    "DAIYEN FOOELS",    85,  60),
  641.     SCROLL("create monster",    "LEP GEX VEN ZEA",  45, 200),
  642.     SCROLL("taming",        "PRIRUTSENIE",        15, 200),
  643.     SCROLL("genocide",        "ELBIB YLOH",        15, 300),
  644.     SCROLL("light",         "VERR YED HORRE",   95,  50),
  645.     SCROLL("teleportation",     "VENZAR BORGAVVE",  55, 100),
  646.     SCROLL("gold detection",    "THARR",        33, 100),
  647.     SCROLL("food detection",    "YUM YUM",        25, 100),
  648.     SCROLL("identify",        "KERNOD WEL",        185, 20),
  649.     SCROLL("magic mapping",     "ELAM EBOW",        45, 100),
  650.     SCROLL("amnesia",        "DUAM XNAHT",        35, 200),
  651.     SCROLL("fire",            "ANDOVA BEGARIN",   48, 100),
  652.     SCROLL("punishment",        "VE FORBRYDERNE",   15, 300),
  653.     SCROLL("charging",        "HACKEM MUCHE",     15, 300),
  654.     SCROLL(NULL,            "VELOX NEB",         0, 100),
  655.     SCROLL(NULL,            "FOOBIE BLETCH",     0, 100),
  656.     SCROLL(NULL,            "TEMOV",         0, 100),
  657.     SCROLL(NULL,            "GARVEN DEH",         0, 100),
  658. #undef SCROLL
  659.  
  660. #if defined(MACOS) && !defined(MAKEDEFS_C)
  661. #define WAND(name,typ,prob,cost,flags,metal,c)    { \
  662.     name, typ}
  663. #else
  664. #define WAND(name,typ,prob,cost,flags,metal,c)    { \
  665.     name, typ, NULL, 0,0,1,0,metal, 0, WAND_SYM, \
  666.     prob, 0, 3, cost, flags, 0, 0, C(c) }
  667. #endif
  668.  
  669. WAND("light",        "glass",    95, 100, NODIR,    GLASS,HI_GLASS),
  670. WAND("secret door detection", "balsa",    50, 150, NODIR,    WOOD,HI_WOOD),
  671. WAND("create monster",    "maple",    45, 200, NODIR,    WOOD,HI_WOOD),
  672. WAND("wishing",     "pine",         5, 500, NODIR,    WOOD,HI_WOOD),
  673. WAND("striking",    "oak",         75, 150, IMMEDIATE,WOOD,HI_WOOD),
  674. WAND("nothing",     "ebony",    25, 100, IMMEDIATE,WOOD,HI_WOOD),
  675. WAND("make invisible",    "marble",    45, 150, IMMEDIATE,MINERAL,HI_MINERAL),
  676. WAND("slow monster",    "tin",        55, 150, IMMEDIATE,METAL,HI_METAL),
  677. WAND("speed monster",    "brass",    55, 150, IMMEDIATE,COPPER,HI_COPPER),
  678. WAND("undead turning",    "copper",    55, 150, IMMEDIATE,COPPER,HI_COPPER),
  679. WAND("polymorph",    "silver",    45, 200, IMMEDIATE,SILVER,HI_SILVER),
  680. WAND("cancellation",    "platinum",    45, 200, IMMEDIATE,PLATINUM,HI_SILVER|BRIGHT),
  681. WAND("teleportation",    "iridium",     45, 200, IMMEDIATE,METAL,CYAN|BRIGHT),
  682. #ifdef PROBING
  683. WAND("opening",     "zinc",        25, 150, IMMEDIATE,METAL,HI_METAL),
  684. WAND("locking",     "aluminum",    25, 150, IMMEDIATE,METAL,HI_METAL),
  685. WAND("probing",     "uranium",    30, 150, IMMEDIATE,METAL,HI_METAL),
  686. #else
  687. WAND("opening",     "zinc",        40, 150, IMMEDIATE,METAL,HI_METAL),
  688. WAND("locking",     "aluminum",    40, 150, IMMEDIATE,METAL,HI_METAL),
  689. #endif
  690. WAND("digging",     "iron",     55, 150, RAY,       METAL,HI_METAL),
  691. WAND("magic missile",    "steel",    50, 150, RAY,       METAL,HI_METAL),
  692. WAND("fire",        "hexagonal",    40, 175, RAY,       METAL,HI_METAL),
  693. WAND("sleep",        "runed",    50, 175, RAY,       METAL,HI_METAL),
  694. WAND("cold",        "short",    40, 175, RAY,       METAL,HI_METAL),
  695. WAND("death",        "long",      5, 500, RAY,       METAL,HI_METAL),
  696. WAND("lightning",    "curved",    40, 175, RAY,       METAL,HI_METAL),
  697. WAND(NULL,        "forked",     0, 150, 0,       WOOD,HI_WOOD),
  698. WAND(NULL,        "spiked",     0, 150, 0,       METAL,HI_METAL),
  699. WAND(NULL,        "jeweled",     0, 150, 0,       METAL,HI_MINERAL),
  700. #undef WAND
  701.  
  702. #ifdef SPELLS
  703. /* books */
  704. #if defined(MACOS) && !defined(MAKEDEFS_C)
  705. #define SPELL(name,desc,prob,delay,level,flags,color) \
  706.     { name, desc}
  707. #else
  708. #define SPELL(name,desc,prob,delay,level,flags,color) \
  709.     { name, desc, NULL, 0,1,0,0,0, 0, SPBOOK_SYM, prob, delay, \
  710.     5, level*100, flags, 0, level, C(color)}
  711. #endif
  712.  
  713. SPELL("magic missile",     "parchment",    45,  3, 2, RAY,        HI_PAPER),
  714. SPELL("fireball",     "vellum",    20,  6, 4, RAY,        HI_PAPER),
  715. SPELL("sleep",         "dog eared",    50,  1, 1, RAY,        HI_PAPER),
  716. SPELL("cone of cold",     "ragged",    10,  8, 5, RAY,        HI_PAPER),
  717. SPELL("finger of death", "stained",     5, 10, 7, RAY,        HI_PAPER),
  718. SPELL("light",         "cloth",    45,  1, 1, NODIR,    HI_CLOTH),
  719. SPELL("detect monsters", "leather",     45,  1, 1, NODIR,    HI_LEATHER),
  720. SPELL("healing",     "white",    40,  2, 1, NODIR,    WHITE),
  721. SPELL("knock",         "pink",    40,  1, 1, IMMEDIATE,    MAGENTA|BRIGHT),
  722. SPELL("force bolt",     "red",        40,  2, 1, IMMEDIATE,    RED),
  723. SPELL("confuse monster", "orange",    37,  2, 2, IMMEDIATE,    ORANGE_COLORED),
  724. SPELL("cure blindness",  "yellow",     27,  2, 2, IMMEDIATE,    YELLOW),
  725. SPELL("slow monster",     "light green",    37,  2, 2, IMMEDIATE,    GREEN|BRIGHT),
  726. SPELL("wizard lock",     "dark green",    35,  3, 2, IMMEDIATE,    GREEN),
  727. SPELL("create monster",  "turquoise",    37,  3, 2, NODIR,    CYAN|BRIGHT),
  728. SPELL("detect food",     "cyan",    37,  3, 2, NODIR,    CYAN),
  729. SPELL("cause fear",     "light blue",    25,  3, 3, NODIR,    BLUE|BRIGHT),
  730. SPELL("clairvoyance",     "dark blue",    15,  3, 3, NODIR,    BLUE),
  731. SPELL("cure sickness",     "indigo",    32,  3, 3, NODIR,    BLUE),
  732. SPELL("charm monster",     "magenta",    20,  3, 3, IMMEDIATE,    MAGENTA),
  733. SPELL("haste self",     "purple",    33,  4, 3, NODIR,    MAGENTA),
  734. SPELL("detect unseen",     "violet",    25,  4, 3, NODIR,    MAGENTA),
  735. SPELL("levitation",     "tan",        25,  4, 4, NODIR,    BROWN),
  736. SPELL("extra healing",     "plaid",    32,  5, 3, NODIR,    GREEN),
  737. SPELL("restore ability", "light brown",    25,  5, 4, NODIR,    BROWN),
  738. SPELL("invisibility",     "dark brown",    32,  5, 4, NODIR,    BROWN),
  739. SPELL("detect treasure", "gray",    25,  5, 4, NODIR,    GRAY),
  740. SPELL("remove curse",     "white",    25,  5, 5, NODIR,    WHITE),
  741. SPELL("dig",         "mottled",    22,  6, 5, RAY,        HI_PAPER),
  742. SPELL("magic mapping",     "rusty",    18,  7, 5, NODIR,    RED),
  743. SPELL("identify",     "bronze",    25,  8, 5, NODIR,    HI_COPPER),
  744. SPELL("turn undead",     "copper",    17,  8, 6, IMMEDIATE,    HI_COPPER),
  745. SPELL("polymorph",     "silver",    12,  8, 6, IMMEDIATE,    HI_SILVER),
  746. SPELL("teleport away",     "gold",    15,  6, 6, IMMEDIATE,    HI_GOLD),
  747. SPELL("create familiar", "glittering",     10,  7, 6, NODIR,    WHITE|BRIGHT),
  748. SPELL("cancellation",     "shining",    12,  8, 7, IMMEDIATE,    WHITE|BRIGHT),
  749. SPELL("genocide",     "glowing",     5, 10, 7, NODIR,    WHITE|BRIGHT),
  750. SPELL(NULL,         "dull",     0,  0, 0, 0,        HI_PAPER),
  751. SPELL(NULL,         "thin",     0,  0, 0, 0,        HI_PAPER),
  752. SPELL(NULL,         "thick",     0,  0, 0, 0,        HI_PAPER),
  753. #undef SPELL
  754. #endif /* SPELLS /**/
  755.  
  756. #if defined(MACOS) && !defined(MAKEDEFS_C)
  757. #define RING(name,stone,power,cost,spec,metal,color) \
  758.     { name, stone}
  759. #else
  760. #define RING(name,stone,power,cost,spec,metal,color) \
  761.         { name, stone, NULL, 0,0,spec,spec,metal, \
  762.         power, RING_SYM, 0, 0, 1, cost, 0, 0, 0, C(color)}
  763. #endif
  764.  
  765. RING("adornment",    "wooden",    ADORNED,    100, 1, WOOD, HI_WOOD),
  766. RING("gain strength",    "granite",    0,        150, 1, MINERAL, HI_MINERAL),
  767. RING("increase damage", "coral",    0,        150, 1, MINERAL, RED|BRIGHT),
  768. RING("protection",    "black onyx",    PROTECTION,    100, 1, MINERAL, BLACK),
  769. RING("regeneration",    "moonstone",    REGENERATION,    200, 0, MINERAL, HI_MINERAL),
  770. RING("searching",    "tiger eye",    SEARCHING,    200, 0, MINERAL, BROWN),
  771. RING("stealth",     "jade",        STEALTH,    100, 0, MINERAL, GREEN),
  772. RING("levitation",    "agate",    LEVITATION,    200, 0, MINERAL, RED),
  773. RING("hunger",        "topaz",    HUNGER,     100, 0, MINERAL, CYAN),
  774. RING("aggravate monster", "sapphire",    AGGRAVATE_MONSTER, 150, 0, METAL, BLUE),
  775. RING("conflict",    "ruby",     CONFLICT,    300, 0, METAL, RED),
  776. RING("warning",     "diamond",     WARNING,    100, 0, METAL, WHITE|BRIGHT),
  777. RING("poison resistance", "pearl",    POISON_RES,    150, 0, METAL, WHITE),
  778. RING("fire resistance", "iron",        FIRE_RES,    200, 0, METAL, HI_METAL),
  779. RING("cold resistance", "brass",    COLD_RES,    150, 0, COPPER, HI_COPPER),
  780. RING("shock resistance", "copper",    SHOCK_RES,    150, 0, COPPER, HI_COPPER),
  781. RING("teleportation",    "silver",    TELEPORT,    200, 0, SILVER, HI_SILVER),
  782. RING("teleport control", "gold",    TELEPORT_CONTROL,
  783.                             300, 0, GOLD, HI_GOLD),
  784. #ifdef POLYSELF
  785. RING("polymorph",    "ivory",    POLYMORPH,    300, 0, 0, WHITE),
  786. RING("polymorph control","emerald",    POLYMORPH_CONTROL,
  787.                             300, 0, METAL, GREEN|BRIGHT),
  788. #endif
  789. RING("invisibility",    "wire",        INVIS,        150, 0, METAL, HI_METAL),
  790. RING("see invisible",    "engagement",    SEE_INVIS,    150, 0, METAL, HI_METAL),
  791. RING("protection from shape changers", "shining", PROT_FROM_SHAPE_CHANGERS,
  792.                             100, 0, METAL, HI_METAL|BRIGHT),
  793. #undef RING
  794.  
  795. #if defined(MACOS) && !defined(MAKEDEFS_C)
  796.     { NULL, NULL}
  797. #else
  798.     { NULL, NULL, NULL, 0,0,0,0,0, 0, ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) }
  799. #endif
  800. };
  801.  
  802. #undef C
  803.